#include<fstream>   
#include<string>   
#include<iostream>   
#include<vector>   
#include<sstream>   
using namespace std;   

struct data{
	vector<string> raw_gga;
	vector<string> raw_rmc;
	string datetime;
	string lat;
	string lon;
	int number;
	double height;
}


  
//数据类型转换模板函数   
template <class Type>      
Type stringToNum(const string str){          
    istringstream iss(str);         
    Type num;         
    iss >> num;         
    return num;         
}    
  
int main()   
{    
    ifstream is("gpsdata");    
    string line;    
    getline(is,line);      
    //读取第一行 GGA格式  
    //GGA字段含义   语句ID,UTC时间，纬度，N/S，经度，E/W，GPS状态，卫星数量，精度因子，海拔 。。。     
    vector<string> arr1;  //定义一个字符串容器    
    int position = 0;    
    do{     
        string tmp_s;    position = line.find(","); //找到逗号的位置     
        tmp_s = line.substr(0,position); //截取需要的字符串      
        line.erase(0,position+1); //将已读取的数据删去       
        arr1.push_back(tmp_s);   //将字符串压入容器中    
    }while(position != -1);
    position = 0;    
    getline(is,line);     
    //读取第二行 RMC格式 
    //RMC字段含义  语句ID,UTC时间，GPS状态，纬度，N/S，经度，E/W，速度(节)，，UTC日期，，，校验值     
    vector<string> arr2;     
    do{     
        string tmp_s;      
        position = line.find(",");     
        tmp_s = line.substr(0,position);     
        line.erase(0,position+1);      
        arr2.push_back(tmp_s);     
    }while(position != -1);    
    is.close();     
    //构造日期时间字符串 YYYY-MM-DD HH:MM:SS     
    string datetime = "20"+arr2[9].substr(4,2)+"-"+arr2[9].substr(2,2)+"-"+arr2[9].substr(0,2)+" "+arr1[1].substr(0,2)+":"+arr1[1].substr(2,2)+":"+arr1[1].substr(4,2);     
    cout<<"UTC时间："<<datetime<<endl;  
    double d0 = stringToNum<double>(arr1[2]);    
    cout<<"经度：";    
    printf("%lf\n",d0/100);     
    //此处不能使用cout，否则输出精度将受到影响    
    double d1 = stringToNum<double>(arr1[4]);    
    cout<<"纬度：";    
    printf("%lf\n",d1/100);     
    cout<<"海拔："<<arr1[9]<<arr1[10]<<endl;    
    return 0;   
}      
  

